1. Field of the Invention
The present invention relates, in general, to animation systems and, more particularly, systems, methods, software and devices providing blended animation enabling an animated character to aim at an arbitrary point in a virtual space.
2. Description of the Related Technology
Animation systems present animated characters (as used in the present disclosure, references to the term “character” may indicate a standard character such as a person, animal, or monster, or any other non-character animated object, depending upon context) in a three-dimensional virtual space. The virtual space is essentially a collection of mathematical models that define various objects, characters, scenery elements and the like that can interact with each other. The animated characters move by programmatic changes in various parameters of the mathematical models. The virtual space is rendered, that is, converted from a mathematical model to a visual representation suitable for viewing by a user, and presented on a display to a viewer. Interactive animation can involve game players who control animated characters. Other animated characters may be programmatically controlled. Such desirable characters will often mimic reality by showing awareness of other characters and objects in the virtual space. This is particularly difficult to implement for artificial intelligence (AI) characters that are partially or completely controlled by computationally implemented algorithms. Certain classes of AI characters may have the ability to look at things, aim at things, and attack things in the three dimensional virtual space.
Animation control refers generally to techniques for controlling a model of a character so that the animation of that model from one position to another appears realistic. In common animation systems, the model describing a character comprises a set of rigid segments connected by joints much like the skeleton of a living creature. An animation sequence comprises a series of poses that can be played to represent some action such as running, swinging, looking at something, and the like. Varying the angle of the joints can yield a very large number of poses. For characters that are user controlled, the animation control system is typically driven by user inputs received from a game controller, for example. For AI characters, the animation control system is driven by algorithms associated with the character itself in response to the state of an environment and events. Characters may also be a combination of user-driven and AI such that a user provides gross control and AI algorithms provide fine control over character behavior.
One animation technique involves pre-rendering a set of animation sequences where each member of the set represents a particular motion for a character or portion of the character. The animation sequences are called at appropriate times to present desired activity. Animated sequences may depict, for example, a character at rest, running, sitting, looking left/right, jumping, and the like. The sequences can be blended to generate complex character actions. For example, a looking left animation sequence can be blended with a looking up animation sequence to generate a blended animation that looks left and up simultaneously. In this manner, a relatively small set of animation sequences can be combined to represent a large range of character action. However, it may not be so easy to select which set members should be combined and how their individual contributions should be weighted in the blended animation to achieve a desired effect.
Inverse kinematics refers to techniques for determining the parameters of a jointed flexible object (also called a kinematic chain) in order to achieve a desired pose. Inverse kinematics are relevant to game programming and general 3D animation, where a common use is to make sure game characters can physically connect to the environment. For example, feet landing firmly on top of terrain when a character is walking, jumping, running, etc. These techniques enable an artist to express the desired spatial appearance of a character rather than manipulate joint angles directly. For example, an animator can move the hand of a 3D model to a desired position and orientation and software selects the appropriate angles of the wrist, elbow, and shoulder joints that correspond.
Unfortunately, standard inverse kinematic techniques only allow the animator an ability to control a limited number of bones and joints. For example, only the neck bone and the upper spine bone may be moveable. A character is aimed at a target by orienting the spine, for example, and the position of other bones in the model are calculated from the resulting transformations. While these techniques are useful for orienting part of the character it does not allow movement in other bones to reflect the pointing or aiming at an arbitrary point in space.